gl renderer: Clip nodes: offset
authorTimm Bäder <mail@baedert.org>
Mon, 3 Dec 2018 17:11:09 +0000 (18:11 +0100)
committerTimm Bäder <mail@baedert.org>
Tue, 4 Dec 2018 05:30:47 +0000 (06:30 +0100)
gsk/gl/gskglrenderer.c

index 753073e97b7d7f988703e48692efbe62219739f4..f9fba2d12d5b81da20a94f85e62c305bf06bfe9f 100644 (file)
@@ -782,6 +782,8 @@ render_offset_node (GskGLRenderer   *self,
     case GSK_BORDER_NODE:
     case GSK_OUTSET_SHADOW_NODE:
     case GSK_LINEAR_GRADIENT_NODE:
+    case GSK_CLIP_NODE:
+    case GSK_ROUNDED_CLIP_NODE:
       {
         ops_offset (builder, dx, dy);
         gsk_gl_renderer_add_render_ops (self, child, builder);
@@ -940,10 +942,6 @@ render_rounded_clip_node (GskGLRenderer       *self,
                           RenderOpBuilder     *builder)
 {
   const float scale = ops_get_scale (builder);
-  const float min_x = node->bounds.origin.x;
-  const float min_y = node->bounds.origin.y;
-  const float max_x = min_x + node->bounds.size.width;
-  const float max_y = min_y + node->bounds.size.height;
   GskRoundedRect child_clip = *gsk_rounded_clip_node_peek_clip (node);
   GskRoundedRect transformed_clip;
   GskRoundedRect prev_clip;
@@ -972,6 +970,10 @@ render_rounded_clip_node (GskGLRenderer       *self,
   else if (graphene_rect_intersection (&builder->current_clip.bounds,
                                        &transformed_clip.bounds, NULL))
     {
+      const float min_x = builder->dx + node->bounds.origin.x;
+      const float min_y = builder->dy + node->bounds.origin.y;
+      const float max_x = min_x + node->bounds.size.width;
+      const float max_y = min_y + node->bounds.size.height;
       graphene_matrix_t scale_matrix;
       gboolean is_offscreen;
       int texture_id;